import { NextRequest, NextResponse } from "next/server";

/**
 * 上游API基础URL
 */
const UPSTREAM = "http://localhost:8000/api";

/**
 * 处理登录POST请求，代理到上游API
 * @param req Next.js请求对象
 * @returns 代理响应
 */
export async function POST(req: NextRequest) {
  try {
    // 构建完整的目标URL
    const target = `${UPSTREAM}/v1/auth/login`;

    console.log("登录请求URL：", target);
    
    // 获取请求体数据
    const body = await req.json();
    
    console.log("登录请求代理到：", target);
    
    // 调用上游API，设置必要的头信息
    const upstream = await fetch(target, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        // 只设置必要的头信息，避免转发不支持的头
        'Accept': 'application/json',
      },
      body: JSON.stringify(body),
    });
    
    // 获取上游响应数据
    const responseData = await upstream.json();
    
    // 创建响应对象，包含CORS头
    const res = new NextResponse(JSON.stringify(responseData), {
      status: upstream.status,
      headers: {
        'Content-Type': 'application/json; charset=utf-8',
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Credentials': 'true',
      },
    });
    
    return res;
  } catch (error) {
    console.error('登录请求代理失败:', error);
    return new NextResponse(
      JSON.stringify({ error: '服务器内部错误', message: '登录请求处理失败' }),
      {
        status: 500,
        headers: {
          'Content-Type': 'application/json; charset=utf-8',
          'Access-Control-Allow-Origin': '*',
        },
      }
    );
  }
}

/**
 * 处理GET请求，返回登录页面相关信息或重定向到登录页面
 */
export async function GET() {
  // 对于登录接口的GET请求，可以返回一个简单的提示或重定向到登录页面
  return new NextResponse(
    JSON.stringify({ message: '请使用POST方法进行登录' }),
    {
      status: 200,
      headers: {
        'Content-Type': 'application/json; charset=utf-8',
        'Access-Control-Allow-Origin': '*',
      },
    }
  );
}

/**
 * 处理OPTIONS请求，用于CORS预检
 */
export async function OPTIONS() {
  return new NextResponse(null, {
    headers: {
      'Access-Control-Allow-Origin': '*',
      'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
      'Access-Control-Allow-Headers': '*',
      'Access-Control-Allow-Credentials': 'true',
      'Cache-Control': 'public, max-age=3600',
    },
  });
}
